﻿Imports Biz
Imports DAL


''' <summary>
''' Clase de gestión de lógica de negocio para la entidad Requisito
''' </summary>
''' <remarks></remarks>
Public Class GestorRequisito

    Private Shared _instance As GestorRequisito
    Private Shared m_semaforo As New Object

    Private _DALRequisito As DALRequisito

    ''' <summary>
    ''' Obtiene un objeto Requisito.
    ''' </summary>
    ''' <param name="oRequisito">Objeto Requisito con la propiedad Dep_Codigo seteada
    ''' con el valor del Requisito a buscar.</param>
    ''' <returns>Objeto cRequisito con datos obtenidos desde la base de datos.</returns>
    ''' <remarks></remarks>
    Public Function Buscar(ByVal oRequisito As cRequisito) As cRequisito

        Return _DALRequisito.Sel(oRequisito)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para consultar la lista de Requisitos de Búsqueda
    ''' </summary>
    ''' <returns>Colección de objetos de tipo cRequisito</returns>
    ''' <remarks></remarks>
    Public Function ConsultarPorBusqueda(oBusqueda As cBusqueda) As Collection

        Return _DALRequisito.SelectAllPorBusqueda(oBusqueda)

    End Function

    ''' <summary>
    ''' Da de alta un nuevo Requisito.
    ''' </summary>
    ''' <param name="oRequisito">Objeto cRequisito con los datos del Requisito a dar
    '''  de alta.</param>
    ''' <returns>True o False indicando el exito de la operación.</returns>
    ''' <remarks></remarks>
    Public Function Ingresar(ByVal oRequisito As cRequisito) As Boolean
        Return _DALRequisito.Insert(oRequisito)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para eliminar un Requisito de búsqueda
    ''' </summary>
    ''' <param name="oRequisito">Objeto de tipo cRequisito con la identificación del registro a eliminar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Eliminar(ByVal oRequisito As cRequisito) As Boolean
        Return _DALRequisito.Delete(oRequisito)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para actualizar un Requisito
    ''' </summary>
    ''' <param name="oRequisito">Objeto de tipo cRequisito con los datos del registro que se va a actualizar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Editar(ByVal oRequisito As cRequisito) As Boolean
        Return _DALRequisito.Update(oRequisito)
    End Function

    ''' <summary>
    ''' Método estático Instance para exponer una única instancia de la clase GestorRequisito
    ''' </summary>
    ''' <returns>Unica instancia de la clase GestorRequisito</returns>
    ''' <remarks></remarks>
    Public Shared Function Instance() As GestorRequisito
        If _instance Is Nothing Then
            SyncLock (m_semaforo)
                If _instance Is Nothing Then
                    _instance = New GestorRequisito
                End If
            End SyncLock
        End If

        Return _instance
    End Function

    Private Sub New()
        _DALRequisito = DALRequisito.Instance
    End Sub

End Class
